no | item | title | name | date | hit |
---|---|---|---|---|---|
26331 | [자율주행 프로젝트 : 메탈 라인트레이서] 아두이노 코딩교육 | 업로드 오류 문의 | vires641 | 2023-12-25 | 247 |
25013 | [자율주행 프로젝트 : 메탈 라인트레이서] 아두이노 코딩교육 | 업로드 오류문제ㅠ | 재야 | 2023-06-10 | 13 |
24948 | [자율주행 프로젝트 : 메탈 라인트레이서] 아두이노 코딩교육 | 작동중 적외선센서랑 초음파센서를 같이 사용할려하는데 코딩한거좀 봐주세요 | 123123 | 2023-05-31 | 340 |
23927 | [자율주행 프로젝트 : 메탈 라인트레이서] 아두이노 코딩교육 | 라인트레이서 작동오류 | 신재연 | 2022-12-11 | 8 |
23828 | [자율주행 프로젝트 : 메탈 라인트레이서] 아두이노 코딩교육 | 인식값 | 차준오 | 2022-11-23 | 7 |
+센서는 추가적으로 더 연결할 수는 있으나 공급 전원에 따라 작동이 불안정해질 수 있어요
#include
#include
AF_DCMotor motor_L(1); // 모터드라이버 L293D 1: M1에 연결, 4: M4에 연결
AF_DCMotor motor_R(4);
int trig = 9;
int echo = 10;
void setup() {
Serial.begin(9600); // PC와의 시리얼 통신속도
Serial.println("Eduino Smart Car Start!");
// turn on motor
motor_L.setSpeed(200); // 왼쪽 모터의 속도
motor_L.run(RELEASE);
motor_R.setSpeed(200); // 오른쪽 모터의 속도
motor_R.run(RELEASE);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
}
void loop() {
int val1 = digitalRead(A0); // 라인센서1
int val2 = digitalRead(A5); // 라인센서2
float distance=-1;
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
//if(digitalRead(echo)==LOW){
distance=(float)pulseIn(echo,HIGH)/29/2;
//}
//else
//{
//pinMode(echo,OUTPUT);
//digitalWrite(echo,LOW);
//pinMode(echo,INPUT);
//}
Serial.print("초음파 :"); Serial.println(distance);
Serial.print("좌 :"); Serial.println(val1);
Serial.print("우 :");
Serial.println(val2);
if(distance>15) {
if (val1 == 0 && val2 == 0) { // 직진
motor_L.run(FORWARD);
motor_R.run(FORWARD);
}
else if (val1 == 0 && val2 == 1) { // 우회전
motor_L.run(FORWARD);
motor_R.run(RELEASE);
}
else if (val1 == 1 && val2 == 0) { // 좌회전
motor_L.run(RELEASE);
motor_R.run(FORWARD);
}
}
else
{
motor_L.run(RELEASE);
motor_R.run(RELEASE);
}
}
이렇게입니다.
float distance=-1;
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
//if(digitalRead(echo)==LOW){
distance=(float)pulseIn(echo,HIGH)/29/2;
이 부분이 조금 이상한데요
크게 의미는 없지만 -1 값을 대입하는 이유가 있나요?
그리구 아래 초음파 센서 작동 관련하여 코드 붙여드리겠습니다 해당 코드 참고하셔서 작성해보세요
long duration, distance;
digitalWrite(trigPin, HIGH); // trigPin에서 초음파 발생(echoPin도 HIGH)
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다.
distance = ((float)(340 * duration) / 1000) / 2;